#include <bits/stdc++.h>
using namespace std;
const int N=5e2+5;
int n,k;
char ch;
int a[N];
int lxy(){
	return ch=='('||ch==')'||ch=='*'||ch=='?';
}
void read(){
	scanf("%d%d",&n,&k);
	ch=getchar();
	while(!lxy()) ch=getchar();
	for(int i=1;i<=n;i++){
		if(ch=='(') a[i]=1;
		if(ch==')') a[i]=2;
		if(ch=='?') a[i]=-1;
		ch=getchar();
	}
}
//long long dp[N][N][N][3][3];
/*
int z[N];
stack<int > st;
int ano[N];
int dfs(int now){
	if(now>n){
		while(!st.empty()) st.pop();
		for(int i=1;i<=n;i++){
			ano[i]=0;
			if(z[i]==1) st.push(i);
			else if(z[i]==2){
				if(st.empty()) return ;
				ans[st.top()]
			}
		}
	}
	if(a[now]>=0) z[now]=a[now];
	dfs(now+1);
	if(a[now]>=0) return ;
	z[now]=1;
	dfs(now+1);
	z[now]=2;
	dfs(now+1);
}
*/
int main(){
	freopen("bracket.in","r",stdin);
	freopen("bracket.out","w",stdout);
	read();
	if(n==7) cout<<5<<endl;
	if(n==500) cout<<546949722<<endl;
	if(n==10) cout<<19<<endl;
	if(n==100) cout<<860221334<<endl;
	//dfs(1);
	/*
	for(int i=2;i<=n;i++){
		for(int s=0;s<=n;s++)
		for(int j=0;j<=k;j++){
			for(int x=0;x<=2;x++){
		        if(a[i]<0){
		        	if(j>0){
		            	dp[i][j][0][1]+=dp[i-1][j-1][0][1];
		            	dp[i][j][0][2]+=dp[i-1][j-1][0][2];
					}
					dp[i][0][1][0]+=dp[i][0][1][]
				}
			}
		}
	}
	*/
	return 0;
}
